import { reqGoodDetail, reqAddCartOrUpdateSkuNum } from "@/api";
const state = {
    //商品分类的数据
    goodDetail: {}
};
const mutations = {
    GETGOODDETAIL: (state, goodDetail) => {
        state.goodDetail = goodDetail;
    }
};
const actions = {
    //getGoodDetail类型的action
    getGoodDetail: async ({ commit, state, dispatch }, payload) => {
        let result = await reqGoodDetail(payload);
        if (result.code == 200) {
            commit("GETGOODDETAIL", result.data);
        }
    },
    //加入购物车(修改商品的个数)
    //当前函数加上asyc，这个函数【addOrUpdate】返回结果一定是Promise
    addOrUpdate: async ({ commit, state, dispatch }, { skuId, skuNum }) => {
        //传递商品的ID、个数
        //加入购物车请求:只是把产品的ID、个数提交给服务器（人家没有返回data）
        //result只是后台返回对象:可以告诉我们加入购物车是成功、还是失败[200||201]
        let result = await reqAddCartOrUpdateSkuNum(skuId,skuNum);
        //成功
        if(result.code==200){
            return 'ok';
        }else{
         //失败
            return Promise.reject();
        }
        //默认函数执行返回的结果为undefined->成功状态
        //返回字符串、数组等等->成功状态
        //返回Promise.reject->失败状态
    }
};
//仓库的计算属性：计算新的属性，带有缓存！！！！
//仓库中的getters，为了简化数据而生【让组件获取数据的时候方便、简单一些】
const getters = {
    //仓库计算属性:利用已有的属性与属性值，搞出一个新的属性
    //state:当前仓库的数据
    //面包屑
    categoryView(state) {
        //detail仓库中的goodDetail属性，起始值空对象state.goodDetail可能是空对象、
        //如果是空对象.categoryView组件获取的数据即为undefined,不能给组件的数据为空对象，至少给空对象
        return state.goodDetail.categoryView || {};//这个函数返回的结果即为这个属性的属性值   
    }
    ,
    //商品描述的数据
    skuInfo(state) {
        return state.goodDetail.skuInfo || {};
    }
    ,
    //销售属性
    saleAttrList(state) {
        return state.goodDetail.spuSaleAttrList || [];
    }
};
//对外暴露
export default {
    state,
    mutations,
    actions,
    getters
}
